package edu.uoc.tds.cliente;


import edu.uoc.tds.common.*;
import java.util.*;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.rmi.RemoteException;
import javax.swing.JList;
import java.awt.event.*;
import edu.uoc.tds.common.UtilLenguaje;
import edu.uoc.tds.server.GestorDisco;
import edu.uoc.tds.server.GestorInscripcion;
import java.awt.Color;



/*******************************************************************************
* PropÃ³sito: Pantalla del subsistema de ConexiÃ³n que permite inscribirse
* a eventos.
*
* @author Fco. Javier GonzÃ¡lez
* @version 1.0
*******************************************************************************/

public class PantallaInscripcion extends javax.swing.JPanel implements
ActionListener, MouseListener
{

    private JLabel label1;
    private JComboBox comboTipoEvento;
    private JLabel label2;
    private JFormattedTextField textoFecha;
    private JButton botonBuscar;
    private JButton botonSalir;
    private JButton botonConfirmar;
    private JButton botonInscribir;
    private JList listaMaestro;
    private JList listaDetalle;
    private final DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    private RemotoInterface objeto;
    private JScrollPane scrollM;
    private JScrollPane scrollD;
    private DefaultListModel modelM;
    private DefaultListModel modelD;
    private ArrayList<String> listaIdEvento;
    private ArrayList<Object[]> listaPre;
    private boolean controlPlazas = true;
    private boolean controlFecha = true;
    private boolean controlSolapamiento = true;
    private JLabel labelMensaje;
    private int idEvento;
    private JLabel labelTitulo;
    private String userId=Variables.usuarioConectado.getCodigo();


    /***************************************************************************
    *
    * Constructor
    *
    ***************************************************************************/
    public PantallaInscripcion(RemotoInterface objeto)
    {
        //El objeto remoto se pasa como parÃ¡metro en el constructor
        this.objeto= objeto;


        initComponents();

        //Estableceremos la posicion de los componentes manualmente
        this.setLayout(null);
     }


    /***************************************************************************
    *
    * Inicializa los controles
    *
    ***************************************************************************/
    private void initComponents()
    {


        //TÃ­tulo de la pantalla
        labelTitulo = new JLabel();
        labelTitulo.setBounds(180, 5, 220, 35);
        labelTitulo.setForeground(Color.blue);
        labelTitulo.setFont(new java.awt.Font("Tahoma", 1, 14));
        labelTitulo.setText(UtilLenguaje.getMessage("PantallaInscripcion"));
        this.add(labelTitulo);

        //Label de eventos
        label1 = new JLabel();
        label1.setText(UtilLenguaje.getMessage("PantallaInscripcion.Eventos"));
        label1.setBounds(20, 35, 130, 25);

        //Label Fecha
        label2 = new JLabel();
        label2.setText(UtilLenguaje.getMessage("PantallaInscripcion.Fecha"));
        label2.setBounds(20, 85, 130, 25);

        //Label Mensaje
        labelMensaje = new JLabel();
        labelMensaje.setBounds(180, 480, 600, 35);
        labelMensaje.setForeground(Color.red);
        labelMensaje.setFont(new java.awt.Font("Tahoma", 1, 14));

        //Campo de texto Fecha
        textoFecha = new JFormattedTextField(sdf);
        textoFecha.setBounds(20, 110, 130, 25);

        //BotÃ³n de buscar
        botonBuscar = new JButton();
        botonBuscar.setText(UtilLenguaje.getMessage("PantallaInscripcion.Buscar"));
        botonBuscar.addActionListener(this);
        botonBuscar.setBounds(20, 150, 130, 25);

        //BotÃ³n para salir
        botonSalir = new JButton();
        botonSalir.setText(UtilLenguaje.getMessage("PantallaInscripcion.Salir"));
        botonSalir.addActionListener(this);
        botonSalir.setBounds(600, 450, 130, 25);

        //BotÃ³n para inscribirse
        botonInscribir = new JButton();
        botonInscribir.setText(UtilLenguaje.getMessage("PantallaInscripcion.Inscripcion"));
        botonInscribir.addActionListener(this);
        botonInscribir.setBounds(180, 450, 130, 25);
        botonInscribir.setEnabled(false);

        //Lista Maestro
        modelM = new DefaultListModel();
        listaMaestro = new JList ();
        listaMaestro.setModel(modelM);
        listaMaestro.addMouseListener(this);  //Reacciones al ratÃ³n
        //Una Ãºnica selecciÃ³n
        listaMaestro.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        //Lista Detalle
        modelD = new DefaultListModel();
        listaDetalle = new JList();
        listaDetalle.setModel(modelD);

        //JScrollPane para lista maestro
        scrollM = new JScrollPane(listaMaestro);
        scrollM.setBounds(180, 40, 550, 180);

        //JScrollPane para lista detalle
        scrollD = new JScrollPane(listaDetalle);
        scrollD.setBounds(180, 250, 550, 180);


        //AÃ±adimos los componentes al panel
        this.add(getComboTipoEvento());
        this.add(textoFecha);
        this.add(labelMensaje);
        this.add(label1);
        this.add(label2);
        this.add(botonBuscar);
        this.add(botonSalir);
        this.add(botonInscribir);
        this.add(scrollM);
        this.add(scrollD);

    }


    /***************************************************************************
    *
    * Acciones que se llevan a cabo al pulsar los botones
    *
    ***************************************************************************/
    public void actionPerformed(ActionEvent e)
    {

        Object origen = e.getSource();

        //Si se pulsa el botÃ³n iniciar
        if(origen == botonBuscar)
        {

            //Verificamos que la fecha es vÃ¡lida
            if (controlFecha())
            {
                modelM.clear();
                modelD.clear();
                conIni();

                listaIdEvento = new ArrayList<String>();

                /*Se rellena la lista maestro con los datos de los eventos y
                se guarda la lista de los id de eventos*/
                listaIdEvento = rellenarListaMaestro();

             }
        }

        else if(origen == botonSalir)
        {

            this.removeAll();
            this.updateUI();

        }

        else if(origen == botonInscribir)
        {
            //Prepara la pantalla para la confirmaciÃ³n
            prepararPantallaConfirmacion();

        }

        else if (origen == botonConfirmar)
        {

            try
            {
                 //Fecha actual
                java.util.Date utilDateF = new java.util.Date();
                utilDateF = sdf.parse(getFecha());

          
                //Se guarda la inscripciÃ³n
                objeto.altaInscripcionIns(userId, idEvento,utilDateF);

                //InserciÃ³n correcta
                JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage("PantallaInscripcion.insertok"),
                UtilLenguaje.getMessage("PantallaInscripcion")
                , JOptionPane.INFORMATION_MESSAGE);

                //Salimos
                this.removeAll();
                this.updateUI();

            }

            catch(RemoteException er)
            {

                JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage("PantallaInscripcion.err.remoto"),
                UtilLenguaje.getMessage("PantallaInscripcion")
                , JOptionPane.ERROR_MESSAGE);
            }

            catch (Exception er)
            {

                JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage("PantallaInscripcion.err.in"),
                UtilLenguaje.getMessage("PantallaInscripcion")
                , JOptionPane.ERROR_MESSAGE);

            }
        }

    }


   /***************************************************************************
   *
   * Establece el botÃ³n inscribir, labelMensaje y controlPlazas a condiciones
   * iniciales
   *
   ****************************************************************************/
    private void conIni()
    {
        controlSolapamiento = true;
        controlFecha = true;
        controlPlazas = true;
        labelMensaje.setVisible(false);
        labelMensaje.setText("");
        botonInscribir.setEnabled(false);

    }

   /****************************************************************************
   *
   * Acciones que se llevan a cabo al hacer click con el ratÃ³n
   *
   *****************************************************************************/
    public void mouseClicked(MouseEvent e)
    {
        //Cuando se hace click en un elemento de la lista maestro
        if(e.getClickCount()==1)
        {

            conIni();
            controlFecha();
            //Obtenemos el id de evento que corresponde con la fila de lista maestro seleccionada
            String cadena = listaIdEvento.get(listaMaestro.getSelectedIndex());
            idEvento = Integer.parseInt(cadena);
            //Con el id obtenido, rellenamos lista detalle
            rellenarListaDetalle(idEvento);

            //Si hay plazas y la fecha seleccionada es al menos 1 dÃ­a inferior a la de celebracion
            if (controlPlazas == true &&  controlFecha== true)
            {

                //Comprueba que no se ha inscrito a otro evento en la misma fecha
                ComprobarSolapamiento(userId, getFecha());

                //Si no se solapan inscripciones
                if (controlSolapamiento== true)
                {
                    //Comprobamos tambiÃ©n si el usuario cunmple los prerrequisitos para ese evento
                    ComprobarPrerrequisitos(userId, idEvento);
                }
            }
        }

    }

    //Al implementar la clase Mousellistener, debemos implementar tambiÃ©n el resto de sus mÃ©todos
    public void mouseExited(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}



    /***************************************************************************
    *
    *  GestiÃ³n de lista maestro
    *
    * return ArrayList<String> ArrayList de Strings con los id de los eventos que
    * aparecen en lista maestro
    *
    ***************************************************************************/
    private ArrayList<String> rellenarListaMaestro()
    {

        ArrayList<Object[]> lista = new ArrayList<Object[]>();
        ArrayList<String> listaId = new ArrayList<String>();

        //Limpia el modelo para que no haya elementos
        modelM.clear();

        try
        {

           //Sacamos lo seleccionado en el comnbo de eventos
           String tipoEvento = comboTipoEvento.getSelectedItem().toString();

           //Fecha escrita por el usuario
           java.util.Date utilDateF = new java.util.Date();
           utilDateF = sdf.parse(textoFecha.getText());

           //Obtenemos los datos de la BBDD y los almacenamos en lista
           lista = objeto.getEventosIns(utilDateF, tipoEvento);

           String cadena = "";

           /*Obtenemos cada campo y los concatenamos en una cadena
           * La cadena contendrÃ¡ cada fila.
           */
           for (int i=0; i< lista.size(); i++)
           {
                for (int j=0; j< 5; j++)
                {

                    //Los id de los eventos se guardan en listaId y no se muestran en la lista maestro
                    if(j==0)
                    {

                        String id = lista.get(i)[j].toString();
                        listaId.add(id);
                    }

                    else
                    {
                        if (j != 4) cadena = cadena + (lista.get(i)[j].toString()) + "  -  ";

                        else cadena = cadena + (lista.get(i)[j].toString());
                    }
                }


                //Una vez obtenida una fila completa, la aÃ±adimos al modelo
                modelM.addElement(cadena);
                cadena="";
           }

           this.updateUI();

        }

        catch(RemoteException er)
        {

            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage("PantallaInscripcion.err.remoto"),
            UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);

        }

        catch (Exception er)
        {


            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage("PantallaInscripcion.err.in"),
            UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);
        }

        finally
        {
            return listaId;

        }
    }



    /***************************************************************************
    *
    * GestiÃ³n de lista detalle
    *
    * @param int id El id del evento del que se quieren obtener sus detalles
    *
    ****************************************************************************/
    private void rellenarListaDetalle(int id)
    {

        ArrayList<Object[]> listaDetalles = new ArrayList<Object[]>();
        listaPre = new ArrayList<Object[]>();

        try
        {
           //Limpia el modelo para que no haya elementos
           modelD.clear();

           //Obtenemos los datos de la BBDD y los almacenamos en lista
           listaDetalles = objeto.getDetallesEventoIns(id);

           String cadena;


           modelD.addElement("DETALLES DEL EVENTO");
           modelD.addElement(" ");


           cadena= "Fecha:   " + textoFecha.getText();

           /*Si se quiere ver un evento de dÃ­a de celebraciÃ³n el dÃ­a actual, no se
           puede inscribir, ya que la fecha de inscripciÃ³n es el dÃ­a de celebraciÃ³n -1 dÃ­a*/
           if ( controlFecha == false)
           {

               controlFecha = false;
               labelMensaje.setText(UtilLenguaje.getMessage("PantallaInscripcion.NoFecha"));
               labelMensaje.setVisible(true);

           }

           modelD.addElement(cadena);
           cadena="";

           //Obtenemos cada campo y los concatenamos en una cadena
           for (int i=0; i< listaDetalles.size(); i++)
           {
                for (int j=0; j< 10; j++)
                {

                    switch(j)
                    {
                        case 0:
                            cadena = UtilLenguaje.getMessage("PantallaInscripcion.tipo") +
                                    "   " + listaDetalles.get(i)[j].toString();
                            break;
                        case 1:
                            cadena = UtilLenguaje.getMessage("PantallaInscripcion.nombre") +
                                    "   " +listaDetalles.get(i)[j].toString();
                            break;
                        case 2:
                            cadena = UtilLenguaje.getMessage("PantallaInscripcion.uni") +
                                    "   " +listaDetalles.get(i)[j].toString();
                            break;
                        case 3:
                            cadena = UtilLenguaje.getMessage("PantallaInscripcion.centro") +
                                    "   " +listaDetalles.get(i)[j].toString();
                            break;
                        case 4:
                            cadena = UtilLenguaje.getMessage("PantallaInscripcion.localidad") +
                                    "   " +listaDetalles.get(i)[j].toString();
                            break;
                        case 5:
                            cadena = UtilLenguaje.getMessage("PantallaInscripcion.direccion") +
                                    "   " +listaDetalles.get(i)[j].toString();
                            break;
                        case 6:
                            cadena = UtilLenguaje.getMessage("PantallaInscripcion.duracion") +
                                    "   " +listaDetalles.get(i)[j].toString() + " " + UtilLenguaje.getMessage("PantallaInscripcion.dias");
                            break;
                        case 7:
                            cadena = UtilLenguaje.getMessage("PantallaInscripcion.precio") +
                                    "   " +listaDetalles.get(i)[j].toString();
                            break;
                        case 8:
                            cadena = UtilLenguaje.getMessage("PantallaInscripcion.plazas") +
                                    "   " +listaDetalles.get(i)[j].toString();
                            break;
                        case 9:
                            cadena = UtilLenguaje.getMessage("PantallaInscripcion.plibres") +
                                    "   " +listaDetalles.get(i)[j].toString();

                            //Si no hay plazas libres
                            if (listaDetalles.get(i)[j].toString().equals("0"))
                            {
                                controlPlazas = false;
                                labelMensaje.setText(UtilLenguaje.getMessage("PantallaInscripcion.NoPlazas"));
                                labelMensaje.setVisible(true);
                            }

                            break;

                    }
                    modelD.addElement(cadena);
                    cadena="";

                }

           }

          /*********************************************************************
          *   Se muestran los prerrequisitos dentro de la lista detalle
          **********************************************************************/

           //Obtenemos los datos de la BBDD y los almacenamos en lista
           listaPre =  objeto.getPrerrequisitosIns(id);

           if (listaPre.isEmpty()== false)
           {
                modelD.addElement(" ");
                modelD.addElement("PRERREQUISTOS");
                modelD.addElement(" ");


                //Obtenemos cada campo y los concatenamos en una cadena
                for (int i=0; i< listaPre.size(); i++)
                {
                    for (int j=0; j< 4; j++)
                    {

                        switch(j)
                        {

                            case 0:
                                cadena =  UtilLenguaje.getMessage("PantallaInscripcion.tipo") +
                                        "   " + listaPre.get(i)[j].toString();
                                break;
                            case 1:
                                cadena = UtilLenguaje.getMessage("PantallaInscripcion.nombre") +
                                        "   " + listaPre.get(i)[j].toString();
                                break;
                            case 2:
                                cadena = UtilLenguaje.getMessage("PantallaInscripcion.uni") +
                                        "   " + listaPre.get(i)[j].toString() + "\n\n";
                                break;
                        }
                        modelD.addElement(cadena);
                        cadena="";

                    }

                }

           }

           this.updateUI();

        }

        catch(RemoteException er)
        {

            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage("PantallaInscripcion.err.remoto"),
            UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);

        }

        catch (Exception er)
        {

            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage
            ("PantallaInscripcion.err.in"),UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);

        }

    }

    /***************************************************************************
    *
    * Comprueba que el usuario no se ha inscrito ya a un evento en la fecha
    * seleccionada
    *
    * @param String userId El id del usuario del que se quieren comprobar
    * los prerreq.
    * @param String fecha La fecha en la que se quiere hacer la comprobaciÃ³n
    *
    ***************************************************************************/
    private void ComprobarSolapamiento(String userId, String fecha)
    {

        try
        {

           //Fecha escrita por el usuario
           java.util.Date utilDateF = new java.util.Date();
           utilDateF = sdf.parse(textoFecha.getText());

           /*Obtenemos los datos de la BBDD sobre las inscripciones del usuario
           en la fecha seleccionada*/
           int valor = objeto.getInscritosFecha(userId, utilDateF);

           /*Si el nÃºmero de prerrequisitos a los que asiste el usuario no
           coincide con el total de prerrequisitos*/
           if (valor != 0)
           {
              controlSolapamiento = false;
              labelMensaje.setText(UtilLenguaje.getMessage("PantallaInscripcion.Solapamiento"));
              labelMensaje.setVisible(true);
           }


        }

        catch(RemoteException er)
        {

            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage("PantallaInscripcion.err.remoto"),
            UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);

        }

        catch (Exception er)
        {

            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage
            ("PantallaInscripcion.err.in"),UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);
        }

    }

    /***************************************************************************
    *
    * Comprueba que el usuario cumple los prerrequistos del evento
    *
    * @param String userId El id de usuario del que se quieren comprobar los prerreq.
    * @param int id_evento El id del evento al que comprobar los prerreq.
    *
    ***************************************************************************/
    private void ComprobarPrerrequisitos(String userId, int id_evento)
    {

        try
        {

           //Obtenemos los datos de la BBDD sobre los prerrequisitos a los que ha asistido el usuario
           int valor = objeto.getPrerrequisitosAsistidosIns(id_evento, userId);

           //Si el nÃºmero de prerrequisitos a los que asiste el usuario no coincide con el total de prerrequisitos
           if (valor != listaPre.size())
           {
              labelMensaje.setText(UtilLenguaje.getMessage("PantallaInscripcion.NoRe"));
              labelMensaje.setVisible(true);
           }
           else  botonInscribir.setEnabled(true);

        }

        catch(RemoteException er)
        {

            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage("PantallaInscripcion.err.remoto"),
            UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);

        }

        catch (Exception er)
        {

            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage
            ("PantallaInscripcion.err.in"),UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);
        }

    }



    /****************************************************************************
    *
    * Verifica que la fecha es correcta y al menos la actual
    * @return boolean Verdadero si es correcta
    *
    ****************************************************************************/
    private boolean controlFecha()
    {

        boolean control = false;
        try
        {
            //Fecha
            java.util.Date utilDateFecha = new java.util.Date();

            //El nÃºmero de caracteres mÃ¡ximo en la fecha es 10 (dd/mm/yyyy)
            String tam = textoFecha.getText();
            if (tam.length()> 10) throw new Exception();
            utilDateFecha = sdf.parse(textoFecha.getText());

            //Fecha actual
            java.util.Date utilDateFechaActual = new java.util.Date();
            utilDateFechaActual= sdf.parse(getFecha());

            //Si la fecha es inferior a la fecha actual +1
            if(utilDateFecha.compareTo(utilDateFechaActual) < 0)
            {
                control = false;
                throw new Exception();

            }

            //Si la fecha es igual a la fecha actual
            if(utilDateFecha.compareTo(utilDateFechaActual)== 0)
            {
                controlFecha = false;
            }
            control = true;
        }

        //Fecha incorrecta
        catch (ParseException ex)
        {
            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage
            ("PantallaInscripcion.Error.Fecha.Invalida"),UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);

            //Reseteamos la fecha
            resetearFecha();
        }

        //Fecha que se introduce es anterior a la fecha actual
        catch (Exception ef)
        {
            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage
            ("PantallaInscripcion.Error.Fecha.Invalida"), UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);

            //Reseteamos la fecha
            resetearFecha();

        }

        finally
        {
            return control;
        }

    }


    /***************************************************************************
    *
    * Prepara la pantalla para la confirmaciÃ³n de inscripciÃ³n cuando el usuario
    * pulsa el botÃ³n de inscribirse
    *
    ***************************************************************************/
    private void prepararPantallaConfirmacion()
    {
        //No muestra los controles innecesarios
        comboTipoEvento.setVisible(false);
        botonInscribir.setVisible(false);
        textoFecha.setVisible(false);
        botonBuscar.setVisible(false);
        scrollM.setVisible(false);
        listaMaestro.setVisible(false);

        //BotÃ³n confirmar
        botonConfirmar = new JButton();
        botonConfirmar.setText(UtilLenguaje.getMessage("PantallaInscripcion.confirmar"));
        botonConfirmar.setBounds(115, 450, 130, 25);
        botonConfirmar.setVisible(true);
        botonConfirmar.addActionListener(this);
        this.add(botonConfirmar);

        //Ajusta la lista detalle
        scrollD.setBounds(115, 65, 550, 325);

        //Label tÃ­tulo
        labelMensaje.setBounds(115, 20, 230, 25);
        labelMensaje.setText(UtilLenguaje.getMessage("PantallaInscripcion.datos"));
        labelMensaje.setFont(new java.awt.Font("Tahoma", 1, 18));
        labelMensaje.setForeground(Color.BLACK);
        labelMensaje.setVisible(true);

        //Ajusta el botÃ³n de salir
        botonSalir.setBounds(535, 450, 130, 25);
        labelTitulo.setVisible(false);

        try
        {


            //Obtenemos los datos de la BBDD y los almacenamos en lista
            ArrayList<Object[]> lista = new ArrayList<Object[]>();

            lista =  objeto.getDatosIns(Variables.usuarioConectado.getCodigo(), true);
            String nombre="";
            String banco="";


            //Obtenemos cada campo y los concatenamos en una cadena
            for (int i=0; i< lista.size(); i++)
            {
                for (int j=0; j<6; j++)
                {
                    switch(j)
                    {

                        case 0:
                              nombre = lista.get(i)[j].toString();
                              break;
                        case 1:
                              nombre = nombre + " " + lista.get(i)[j].toString();
                              break;
                        case 2:
                              banco = lista.get(i)[j].toString();
                              break;
                        case 3:
                              banco = banco + "   " + lista.get(i)[j].toString();
                              break;
                        case 4:
                              banco = banco + "   " + lista.get(i)[j].toString();
                              break;
                        case 5:
                              banco = banco + "   " + lista.get(i)[j].toString();
                              break;

                     }

                }

            }

        //Label datos usuario
        label1.setBounds(115, 400, 350, 25);
        label1.setText(UtilLenguaje.getMessage("PantallaInscripcion.nombreUsuario")
                + "    " + nombre);

        //Label datos bancarios
        label2.setBounds(115, 420, 350, 25);
        label2.setText(UtilLenguaje.getMessage("PantallaInscripcion.datosBanco")
                + "    " + banco);
        }

        catch(RemoteException er)
        {

            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage("PantallaInscripcion.err.remoto"),
            UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);

        }

        catch (Exception er)
        {

            JOptionPane.showMessageDialog(null, UtilLenguaje.getMessage
            ("PantallaInscripcion.err.in"),UtilLenguaje.getMessage("PantallaInscripcion")
            , JOptionPane.ERROR_MESSAGE);

        }

    }



    /***************************************************************************
    *
    * Resetea la fecha
    *
    ***************************************************************************/
    private void resetearFecha()
    {
         try
         {
            textoFecha.setValue(null);
            textoFecha.commitEdit();

         }

         catch (ParseException ex)
         {
             //Si se cambia a null, siempre entrarÃ¡ aquÃ­
         }

    }


    /**************************************************************************
    *
    * Crea un combo relleno con los tipos de eventos
    *
    * @return  JComboBox
    *
    ***************************************************************************/
    private JComboBox getComboTipoEvento()
    {

        if (comboTipoEvento == null)
        {


            Vector<MostrarCombo> vTipoEventos;

            try
            {

                vTipoEventos = this.objeto.listaTipoEventos();
                comboTipoEvento = new JComboBox(vTipoEventos);
                comboTipoEvento.addItem("Todos los eventos");
                comboTipoEvento.setSelectedIndex(4);
                comboTipoEvento.setBounds(20, 60, 130, 25);
            }

            catch (RemoteException eRe)
            {
                JOptionPane.showMessageDialog(null,UtilLenguaje.
                        getMessage("PantallaInscripcion.err.remoto") + "\n" + eRe.getMessage(),
                        UtilLenguaje.getMessage("PantallaInscripcion"), JOptionPane.ERROR_MESSAGE);

            }

        }

        return comboTipoEvento;
    }



    /***************************************************************************
    *
    * Devuelve la fecha actual
    *
    * @return String La fecha actual
    *
    ***************************************************************************/
    private String getFecha()
    {

        Calendar cal = new GregorianCalendar();

        String cadenaFecha  = (Integer.toString(cal.get(Calendar.DAY_OF_MONTH))) +
        "/" + (Integer.toString(cal.get(Calendar.MONTH ) + 1)) + "/" +
        (Integer.toString(cal.get(Calendar.YEAR)));

        return(cadenaFecha);
    }

}

